import axios from 'axios'
import Notify from '@/components/prompt/prompt.js'

const request = axios.create({
  baseURL: process.env.VUE_APP_SERVE,
  timeout: 10 * 5000
})
// 响应拦截器
request.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  token && (config.headers.Authorization = token)
  return config
}, error => {
  console.log('请求拦截器 - 发生错误:', error)
  return Promise.reject(error)
})
// 响应拦截器
request.interceptors.response.use(response => {
  if (response.data.code === 200) {

    return response.data
  } else {
    return Promise.reject(response.data.message)
  }
}, error => {
  return Promise.reject(error);
});
export default request

// 3.响应拦截器
service.interceptors.response.use(response => {
  //接收到响应数据并成功后的一些共有的处理，关闭loading等
  let { code, msg } = response.data
  switch (code) {
    case 300:
        // msg = "缺少请求参数"
        Message.error(msg)
        break;
    case -1:
        // msg = "服务器内部错误"
        Message.error(msg)
        break;
    case 2000:
        // msg = "当前登录token无效，请重新登录"
        Message.error(msg)
        // 回到登录的路由
        break;
    default:
        // Message.error('未知错误')
  }
  return response
}, error => {
  /***** 接收到异常响应的处理开始 *****/
  if (error && error.response) {
    // 1.公共错误处理
    // 2.根据响应码具体处理
    switch (error.response.status) {
      case 400:
          error.message = '错误请求'
          break;
      case 401:
          error.message = '未授权，请重新登录'
          break;
      case 403:
          error.message = '拒绝访问'
          break;
      case 404:
          // Message.error(error.message)
          error.message = '接口不存在'
          // window.location.href = "/NotFound"
          break;
      case 405:
          error.message = '请求方法未允许'
          break;
      case 408:
          error.message = '请求超时'
          break;
      case 500:
          error.message = '服务器端出错'
          break;
      case 501:
          error.message = '网络未实现'
          break;
      case 502:
          error.message = '网络错误'
          break;
      case 503:
          error.message = '服务不可用'
          break;
      case 504:
          error.message = '网络超时'
          break;
      case 505:
          error.message = 'http版本不支持该请求'
          break;
      default:
          error.message = `连接错误${error.response.status}`
    }
  } else {
      // 超时处理
      if (JSON.stringify(error).includes('timeout')) {
          Message.error('服务器响应超时，请刷新当前页')
      }
      error.message = '连接服务器失败'
  }
  Message.error(error.message)
  /***** 处理结束 *****/
  //如果不需要错误处理，以上的处理过程都可省略
  return Promise.resolve(error.response)
})

//4. 共外部访问
export default service
